因為最近諸事不順, 發生寫好了存在電腦裡但忘記上去發文的悲劇。
可能這最後幾天都會寫得更簡短任性, 說好要慢慢補的剩餘部分, 我想先休息一下富堅一下
承上篇, 出處 , 有簡體版 , 進入後自行點選
NPM 是開發 Node app 的靈魂 , 它用來取得需要用來開發 、 測試 、 準備上線的 JS libraries 套件工具
Note: 對 Node 而言, Express 只是另一個需要由 NPM 安裝的套件, 接著記得在 code 裡面 require()
通常我們會以 " dependencies 型態 " 安裝套件, 這樣他會被記載在 package.json, 這個檔案列出所有被安裝的 dependencies , 會有名稱、 版號、 其他敘述、 initial file to execute( 這我不知道是啥 )、 production dependencies、 dev dependencies、 支援的 Node 版號 ... 。
package.json 應該要包含執行這個 app 所需要的所有套件 ( 如果要寫可重用的 library, 要把它上傳到 npm repository, 這樣網路上其他 user 才可以載下來, 參考資料: 如何發佈你的「包」到 NPM Repository 來源 SJ )
懶人結論: 就我的認知,它是方便給其他開發者參考有用到那些工具的文件然後可以「一鍵安裝」
以下步驟把 package 存到專案 dependencies 裡面, Node app 需要用到
Note: 這裡教怎麼安裝 Express package, 之後會有其他的以及 Express App Generator。 這個段落旨在了解 NPM 怎麼運作,還有 app generator 會建構出哪些東西
mkdir myapp
cd myapp
npm init
建立 package.json 檔案。 這指令會啟動某些事, 包括 app 名字跟版數, 以及進入點檔案的名字, 預設是 index.js
$ npm init
如果把檔案開來看( $ cat package.json
)會長這樣
{
"name": "myapp",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
}
$ npm install express
Dependencies 段落會在文件的最下方:
{
"name": "myapp",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.16.4"
}
}
require()
function 呼叫 Express library
。 現在就在 myapp 目錄新增這個檔案, 貼上以下內容:const express = require('express')
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!')
});
app.listen(8000, () => {
console.log('Example app listening on port 8000!')
});
用 require()
引入 express module 來製造一個 server ( app )。 app.get()
只針對指定 URL path ('/') 回應 HTTP GET req
$ node index.js
Expample app listening on port 8000
某一個 dependency 如果只有在開發階段用到, 那應該要存成 development dependency
, 這樣 package user 就不用安裝在 production 裡面。 例如使用 JS Linting eslint , 應該要這樣安裝:
npm i eslint --save-dev
package.json 就會這樣記載
"devDependencies": {
"eslint": "^4.12.1"
}
Note: Linters 是規範型的工具, 監測在 coding 時有沒有遵從某些規範
存在電腦裡但忘記上去發文的悲劇
明年再來!!!!
會哦,如果明年開賽的時候不忙的話;已經想好主題了,你也參加呀~
嘿嘿 正在選題目!!!!